package com.hopu.v1.service.admin.classes;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hopu.v1.exception.NoLoginException;
import com.hopu.v1.pojo.classes.Student;
import com.hopu.v1.pojo.classes.StudentVoucher;
import com.hopu.v1.pojo.common.R;
import com.hopu.v1.utils.SendMessage;
import com.hopu.v1.vo.EmploymentInfoVo;
import com.hopu.v1.vo.StudentClassVo;
import jakarta.servlet.http.HttpSession;

import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeUnit;

/**
* @author admin
* @description 针对表【t_student(学生表)】的数据库操作Service
* @createDate 2024-09-26 15:30:32
*/
public interface StudentService extends IService<Student> {
    /**
     * 分页条件查询学生
     * @param page
     * @param student
     * @return
     */
    Page<StudentClassVo> selectAll(Page<Student> page, Student student);

    /**
     * 根据ID进行启停用修改
     * @param id
     * @return
     */
    R statusUpdate(Integer id);

    /**
     * 获取最后一条数据
     * @return
     */
    Student getLastStudent();

    /**
     * 学号查重
     * @param student
     * @param string
     * @return
     */
    boolean checkStudentId (Student student,String string);

    /**
     * 添加学生
     * @param student
     * @return
     */
    R addStudent(Student student);

    /**
     * 修改学生
     * @param student
     * @return
     */
    R updateStudent(Student student);

    /**
     * 登录（学号密码登录）
     */
    R login(String studentId,String voucher);

    boolean checkPhone(String telephone);

    /**
     * 发送短信验证码
     * @param telephone
     * @return
     */
    String sendCode(String telephone);

    /**
     * 登录（手机号验证码登录）
     */
    R login2(String telephone ,String code);

  //  String callback(String code,String state) throws IOException;

    /**
     * 根据微信用户的openId登录
     *
     * @param openId
     * @param session
     * @return
     */

    R login3(String openId, HttpSession session) throws IOException;

    /**
     * 通过学生学号获取信息
     * @param studentId
     * @return
     */
    Student studentInfo(String studentId);

    /**
     * 通过手机号获取信息
     * @param telephone
     * @return
     */

    Student studentInfoByphone(String telephone);

    /**
     * 通过微信登陆者的openId获取学生信息
     * @param openId
     * @return
     */

    Student studentInfoByOpenId(String openId);


    /**
     * 查询班级的所有考勤
     * @param classId
     * @return
     */
    List<Student> selectAttendance(Integer classId);
    
    /**
     * 获取学生密码
     * @param studentId
     * @return
     */
    String getStudentPassword(String studentId);
    
    /**
     * 修改学生
     * @param student
     */
    void updateStudent(EmploymentInfoVo student);
    
    /**
     * 绑定微信
     * @param studentId
     * @param code
     * @param state
     * @param session
     */
    void bindingWeChat(String studentId, String code, String state, HttpSession session) throws IOException;

    /**
     * 绑定手机
     * @param phoneNum
     * @return
     */
    R bindingPhone(String studentId,String password,String phoneNum);

    /**
     * 注冊手機號發送信息
     * @param telephone
     * @return
     */
    String newSendCode(String telephone);

    /**
     * 驗證手機驗證碼
     * @param telephone
     * @param code
     * @return
     */
    R checkCode(String telephone,String code);
}
